using RAG.Application.Dtos.Knowledge;

namespace RAG.Application.Services.Interfaces;

public interface IKnowledgeBaseService
{
    Task<DocumentResponseDto> UploadDocumentAsync(KnowledgeUploadDto uploadDto, Guid userId);
    Task<List<DocumentResponseDto>> GetUserDocumentsAsync(Guid userId);
    Task<DocumentResponseDto?> GetDocumentAsync(Guid documentId);
    Task DeleteDocumentAsync(Guid documentId, Guid userId);
    Task<bool> ProcessDocumentAsync(Guid documentId);
    Task<KnowledgeStatisticsDto> GetStatisticsAsync(Guid userId);
    Task<PagedResult<KnowledgeItemDto>> QueryKnowledgeItemsAsync(KnowledgeItemQuery query, Guid userId);
    Task<KnowledgeItemDetailDto?> GetKnowledgeItemAsync(Guid id, Guid userId);
}
